// 引入模块
let express = require('express');
let bodyParser = require('body-parser');
let cookieParser = require('cookie-parser');
let moduls = require('./module');
let Chat = moduls.getModel('chat');

// 引入中间件等外部文件
let userRouter = require('./user');

let app = express();
// socket和http统一端口
let server = require('http').Server(app);
// 将socket和express建立连接
let io = require('socket.io')(server);
// Chat.remove({},(err,data) => {})
app.get('/chat',(req,res) => {
    Chat.find({},(err,data) => {
        res.json(data);
    })
})
io.on('connection',function(socket) {
    // console.log(socket);
    console.log('和客户端建立起联系了')
    // 监听客户端发来的消息
    // socket.on('send',(data) => {
    //     console.log(data);
    //     io.emit('send',data.text);
    // })
    socket.on('chatMsg',(data) => {
        // console.log(data);
        let {from, to, msg} = data;
        // 由于两个人的聊天，对应的是两个id，无论谁发给谁，都是同一个对话，故将两个人的id排序处理一下，作为对话的唯一标识
        let chatId = [from,to].sort().join('_');
        Chat.create({chatId,from,to,content:msg},(err,data) => {
            console.log(data);
            io.emit('msgRecv',data);
        })
    })
})

// 使用中间件
app.use(cookieParser());
app.use(bodyParser.json());
// app.use(bodyParser.urlencoded({ extended: false }));
app.use('/user',userRouter);


server.listen(8888,() => {
    console.log('服务器运行在8888端口');
})